using System;
using System.Collections.Generic;
using System.Text;
using System.ServiceModel;
using Sinacor.Infra.Service.Security.Services;
using Sinacor.Servico.Bovespa.Corretagem.Service.ServiceContract;


namespace Sinacor.Servico.Bovespa.Corretagem.Service.ServiceImplementation
{
    /// <summary>
    /// Classe de implementacao de contrato de servico FormadorMercado
    /// </summary>
    [SinacorServiceBehavior]
    public class FormadorMercado : IFormadorMercado
    {
        #region Atributos

        Translator.DataContractToBusinessEntity.FormadorMercado _translatorDCToBE = null;
        Translator.BusinessEntityToDataContract.FormadorMercado _translatorBEToDC = null;

        #endregion


        #region Construtor
        /// <summary>
        /// Construtor PoliticaCorretagem
        /// </summary>
        public FormadorMercado()
        {
            this._translatorDCToBE = new Translator.DataContractToBusinessEntity.FormadorMercado();
            this._translatorBEToDC = new Translator.BusinessEntityToDataContract.FormadorMercado();
        }
        
        #endregion                      

        #region IFormadorMercado Members
        
        /// <summary>
        /// Altera Formador Mercado
        /// </summary>
        public void AlterarFormadorMercado(Sinacor.Servico.Bovespa.Corretagem.Service.DataContract.Request.FormadorMercadoRequest request)
        {
            new BusinessLogic.FormadorMercado().AlterarFormadorMercado(this._translatorDCToBE.ToFormadorMercado(request));
        }

        /// <summary>
        /// Altera Formadores Mercados
        /// </summary>
        public void AlterarFormadoresMercados(List<DataContract.Request.FormadorMercadoRequest> requestList)
        {
            new BusinessLogic.FormadorMercado().AlterarFormadoresMercados(this._translatorDCToBE.ToFormadorMercado(requestList));
        }

        /// <summary>
        /// Consulta Conflito Periodo
        /// </summary>
        public List<Sinacor.Servico.Bovespa.Corretagem.Service.DataContract.Response.FormadorMercadoResponse> ConsultarConflitoPeriodo(Sinacor.Servico.Bovespa.Corretagem.Service.DataContract.Request.FormadorMercadoRequest request)
        {
            return this._translatorBEToDC.ToFormadorMercadoResponse(
                new BusinessLogic.FormadorMercado().ConsultarConflitoPeriodo(this._translatorDCToBE.ToFormadorMercado(request)));
        }
        
        /// <summary>
        /// Consulta Formadores Mercados
        /// </summary>        
        public List<Sinacor.Servico.Bovespa.Corretagem.Service.DataContract.Response.FormadorMercadoResponse> ConsultarFormadoresMercados(Sinacor.Servico.Bovespa.Corretagem.Service.DataContract.Request.FiltroFormadorMercadoRequest request)
        {
            return this._translatorBEToDC.ToFormadorMercadoResponse(
                new BusinessLogic.FormadorMercado().ConsultarFormadoresMercados(this._translatorDCToBE.ToFiltroFormadorMercado(request)));
        }

        /// <summary>
        /// Exclui Formador Mercado
        /// </summary>
        public void ExcluirFormadorMercado(Sinacor.Servico.Bovespa.Corretagem.Service.DataContract.Request.FormadorMercadoRequest request)
        {
            new BusinessLogic.FormadorMercado().ExcluirFormadorMercado(this._translatorDCToBE.ToFormadorMercado(request));            
        }

        /// <summary>
        /// Exclui Formadores Mercados
        /// </summary>
        public void ExcluirFormadoresMercados(List<Sinacor.Servico.Bovespa.Corretagem.Service.DataContract.Request.FormadorMercadoRequest> requestList)
        {
            new BusinessLogic.FormadorMercado().ExcluirFormadoresMercados(this._translatorDCToBE.ToFormadorMercado(requestList));            
        }

        /// <summary>
        /// Executar Transacoes Formador Mercado
        /// </summary>
        public void ExecutarTransacoesFormadorMercado(List<DataContract.Request.FormadorMercadoRequest> inclusaoList, List<DataContract.Request.FormadorMercadoRequest> exclusaoList, List<DataContract.Request.FormadorMercadoRequest> alteracaoList)
        {
            new BusinessLogic.FormadorMercado().ExecutarTransacoesFormadorMercado(
                this._translatorDCToBE.ToFormadorMercado(inclusaoList),
                this._translatorDCToBE.ToFormadorMercado(exclusaoList),
                this._translatorDCToBE.ToFormadorMercado(alteracaoList));
        }

        /// <summary>
        /// Inclui Formador Mercado
        /// </summary>
        public void IncluirFormadorMercado(Sinacor.Servico.Bovespa.Corretagem.Service.DataContract.Request.FormadorMercadoRequest request)
        {
            new BusinessLogic.FormadorMercado().IncluirFormadorMercado(new Translator.DataContractToBusinessEntity.FormadorMercado().ToFormadorMercado(request));
        }

        /// <summary>
        /// Inclui Formadores Mercados
        /// </summary>
        public void IncluirFormadoresMercados(List<Sinacor.Servico.Bovespa.Corretagem.Service.DataContract.Request.FormadorMercadoRequest> requestList)
        {
            new BusinessLogic.FormadorMercado().IncluirFormadoresMercados(new Translator.DataContractToBusinessEntity.FormadorMercado().ToFormadorMercado(requestList));
        }

        #endregion
    }
}
